Today's computers include large numbers of configuration settings that can be customized by a user or a network administrator. These settings can be used to alter the appearance and functionality of the operating system, applications, and other software. Using the Windows operating system as an example, some of the configuration settings include desktop settings (including control panel settings), network settings, file system folder settings, application specific settings, Internet settings, and so forth.
Managing user settings is a formidable task. Part of the problem is due to the sheer number of settings on a computer. However, an even bigger part of the problem is that the settings are largely unorganized. Computers running the Windows family of operating systems may have settings stored in the registry or in any of a number of files. For example, the operating system may store some settings in various places in the registry and store other settings in multiple files in various locations. Applications suffer from the same problem. The end result is that configuration settings are dispersed all over the computer in a way that makes them difficult to collect and manage.
Another problem that adds to the complexity is that there is no easy way to collect and store configuration settings that have different formats. The operating system and applications typically use unique data layouts and data storage features that do not allow for homogenous collection and storage.
All of this combined makes it very difficult for a user or network administrator to migrate a user's settings to another computer, restore a user's settings after a system failure, restore a user's settings after an application has become corrupted, and the like. Ultimately, the choice has to be made to either manually reconfigure the operating system and/or applications or to spend hours of hands-on time trying to capture and/or implement the old settings. For this reason, many users and network administrators are very hesitant to reinstall software to correct problems. They would rather live with the problem than be forced to reconfigure all of the settings again.
Another situation when user settings can be challenging to manage occurs when virtualized applications are installed on the computer. Virtualized applications improve application compatibility and manageability by encapsulating applications from the underlying operating system on which they are executed. A virtualized application is not installed in the traditional sense, although it is still executed as if it is.
When a virtualized application is launched, the virtualization layer intercepts and transparently redirects operations such as file input/output by the application. The virtualized application believes it has direct access to the underlying operating system resources, although in effect it does not, because its operations are transparently redirected elsewhere. Virtualized applications are commonly paired with application streaming to deliver applications on demand.
When an application is virtualized, the application and/or data sets associated with the application are deployed on the operating system in a virtual package. The virtual package contains all of the files, processes, and settings required to successfully run the application. The virtual package is like a layer over the base operating system so that the system appears to contain the aggregate contents of the base operating system plus the active virtual packages.
An application virtualization software (sometimes referred to herein as a virtualization application) is used to capture all of the files, registry settings, etc. into the virtual package as the application is installed. Because the application, its settings, files, and data are contained in the virtual package, the application can be instantly activated, deactivated, or reset. Also, this prevents conflicts between applications without altering the base installation.
Some examples of application virtualization software can be found in the following U.S. patents: (1) U.S. Pat. No. 7,162,724, entitled “Layered Computing Systems and Methods,” issued on 9 Jan. 2007, (2) U.S. Pat. No. 7,165,260, entitled “Layered Computing Systems and Methods for Insecure Environments,” issued on 16 Jan. 2007, and (3) U.S. Pat. No. 7,117,495, entitled “Systems and Methods for the Creation of Software Packages Using Layered Systems,” issued on 3 Oct. 2006, all of which are incorporated herein by reference in their entirety. In the event of a conflict, the subject matter explicitly recited or shown herein controls over any subject matter incorporated by reference. All express or implied definitions of a term contained in any of the subject matter incorporated by reference herein are hereby disclaimed.
One of the advantages of virtualized applications is that they can be instantly reset back to their original installed configuration. This is useful when an application is poorly written and causes adverse effects on the system. Although this is a powerful tool, resetting an application, unfortunately, resets all of the user's settings for that application. For this reason, many users and network administrators are reluctant to reset applications.
Accordingly, it would be desirable to provide an improved system and method to manage user configuration settings that overcome one or more of these problems.